/*
 * 
 */
package com.hama.iotrust.common.mybatis.criteria;

import java.util.Map;

import com.hama.iotrust.common.mybatis.criteria.Criteria;
import com.hama.iotrust.common.mybatis.criteria.CriteriaException;

/**
 * SQL 表达式接口.
 * 
 * @author 金建强(ptma@163.com)
 * @version 1.0.0
 * @since 2013-3-16 上午09:01:32
 */
public interface Expression {

    /**
     * @return 返回 表达式 SQL
     */
    String getSql();

    /**
     * @return 返回 表达式参数
     */
    Map<String, Object> getParameter();

    /**
     * 校验参数合法性.
     */
    boolean verify(Criteria<?> criteria);

    /**
     * 表达式参数绑定到数据库的字段
     * 
     * @throws 表达式参数不能映射到数据库的字段时抛出CriteriaException
     */
    void bind(Criteria<?> crit) throws CriteriaException;
}
